package pruebasUnitarias.pruebasArmas;

import objetos.ObjetoMovil;
import objetos.aeronaves.enemigos.Caza;
import objetos.armas.CuartoArmas;
import objetos.proyectiles.Proyectil;
import org.junit.*;

public class CuartoArmasTest {
	private ObjetoMovil avion;
	private CuartoArmas unArsenal;
	private CuartoArmas unArsenalSinArmas;
	private Proyectil bala;

	@Before
	public void setUp() {
		avion = new Caza(1, 0);
		unArsenal = new CuartoArmas(avion);
		unArsenalSinArmas = new CuartoArmas(avion);
		unArsenal.activarLaser();
		unArsenal.cargarCohetes(10);
		unArsenal.cargarRastreadores(10);
		unArsenal.cargarTorpedos(10);
		unArsenal.cargarAdaptables(10);
	}

	@Test
	public void testDispararVacio() {
		bala = unArsenalSinArmas.disparar();
		Assert.assertNull(bala);

		System.out.println("El centro de armas no dispara cuando esta vacio");
	}

	@Test
	public void testDisparar() {
		bala = unArsenal.disparar();
		Assert.assertNotNull(bala);
		Assert.assertTrue(bala.getOrigen() == avion);

		System.out.println("El centro de armas dispara bien");
	}

	@Test
	public void testVaciarUnArsenal() {
		CuartoArmas otroArsenal = new CuartoArmas(avion);
		otroArsenal.getLaser().setActivo(false);
		otroArsenal.getCohetera().recargar(1);
		for (int i = 0; i < 5; i++) {
			otroArsenal.disparar();
		}

		bala = otroArsenal.disparar();
		Assert.assertNull(bala);

		System.out
				.println("El centro de armas se vacia al disparar todas las armas");
	}

}
